/**
 * 使用dll技术，对某些库（第三方库：jquery、react、vue...)进行单独打包
 * 当你运行webpack时，默认查找 webpack.config.js 配置文件
 * 需求：需要运行 webpack.dll.js 文件
 * --> webpack --config webpack.dll.js
 */
const { resolve } = require('path');
const webpack = require('webpack');

module.exports = {
  // 打包出来的dll文件将细化到每个入口名称
  // entry: {
  //   // 最终打包生成的[name] --> jquery
  //   // ['jquery'] --> 要打包的库是jquery
  //   jquery: ['jquery'],
  //   lodash: ['lodash'],
  // },
  // 打包后，dll下只有一个文件，所有第三方包都打包进vendors.js
  entry: {
    vendors: ['jquery', 'lodash'],
  },
  output: {
    filename: '[name].js', // 文件名[name]指入口中的vendors
    path: resolve(__dirname, 'dll'),
    library: '[name]_[hash:6]', // 打包的库里面向外暴露出去的内容的名字
  },
  plugins: [
    // 打包生成一个 mainfest.json --> 提供和vendors映射
    new webpack.DllPlugin({
      name: '[name]_[hash:6]', // 映射的暴露的内容名称，和output.library保持一致
      path: resolve(__dirname, 'dll/[name].manifest.json'), // 输出映射文件
    }),
  ],
  mode: 'production',
};
